"""
需求：在执行用例的过程，记录日志（把日志记录到文件）
    日志收集器

封装一个创建日志收集器的方法
"""
import logging
from logging.handlers import TimedRotatingFileHandler
from common.handle_path import LOG_DIR
import os
from common.handle_config import conf    # conf为配置解析器(对象),导入后，可以读取配置文件内容




def create_logger():
    """创建日志收集器"""
    # 第一步：创建日志搜集器
    # 1.创建一个收集器
    log = logging.getLogger('jane')
    # 2.设置日志收集器收集等级
    log.setLevel(conf.get('logging','level'))     # get(section配置快,option配置项)

    # 第二步：创建日志输出渠道-到文件
    # 1.创建一个按时间轮转的文件输出渠道

    file_path = os.path.join(LOG_DIR,'luowei.log' )
    fh = TimedRotatingFileHandler(filename=file_path, when='d', interval=1, backupCount=3, encoding='utf-8')
    # 2.设置输出到文件的输出等级
    fh.setLevel(conf.get('logging','fh_level'))
    # 3.将输出渠道添加到收集器中
    log.addHandler(fh)

    # 第二步：创建日志输出渠道-到控制台
    # 1.创建一个输出到控制台的输出渠道
    sh = logging.StreamHandler()
    # 2.设置输出到控制台的输出等级
    sh.setLevel(conf.get('logging','sh_level'))
    # 3.将输出渠道添加到收集器中
    log.addHandler(sh)

    # 第三步：设置日志输出格式
    formats='%(asctime)s - [%(filename)s-->line:%(lineno)d] - %(levelname)s: %(message)s'  # 常用的日志输出格式
    mat = logging.Formatter(formats)    # 创建一个日志输出格式的对象  要把它和输出渠道进行绑定
    fh.setFormatter(mat)        # 把输出格式添加到输出渠道（文件）上面
    sh.setFormatter(mat)        # 把输出格式添加到输出渠道（控制台）上面

    return log     # 返回的是日志收集器

log = create_logger()   # 创建一个生成器对象，可以通过日志收集器去收集日志
"""
一个程序里面，只能创建一个日志生成器对象，否则日志会被重复收集.
有几个日志生成器，日志就会被重复打印几次
"""





